<?php
/**
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled with this
 * package in the file LICENSE.txt. It is also available through the
 * world-wide-web at this URL: http://dragonjsonserver.de/license. If you did
 * not receive a copy of the license and are unable to obtain it through the
 * world-wide-web, please send an email to license@dragonjsonserver.de. So we
 * can send you a copy immediately.
 *
 * @copyright Copyright (c) 2012 DragonProjects (http://dragonprojects.de)
 * @license http://framework.zend.com/license/new-bsd New BSD License
 * @author Christoph Herrmann <developer@dragonjsonserver.de>
 */
?>
<h3>Version 1.2.6</h3>
<h4>Releasedatum: 23.08.2012</h4>
<h4>Geänderte Pakete</h4>
<ul>
    <li>
        Dragon
        <ul>
            <li>
                Json
                <ul>
                    <li>Fehler beim Setzen des HTTP Header bei Multirequests. Dieser wird nun richtig gesetzt</li>
                </ul>
            </li>
        </ul>
    </li>
    <li>
        DragonX
        <ul>
            <li>
                Clientmessage
                <ul>
                    <li>Es besteht nun die Möglichkeit das Senden der Clientnachrichten durch Belegung des 'timestamp' mit -1 zu deaktivieren</li>
                </ul>
            </li>
        </ul>
    </li>
</ul>
<h4>JsonClient</h4>
<ul>
    <li>Sendet und bearbeitet nun auch Multirequests richtig wenn Clientnachrichten aktiviert sind. Diese werden nur beim letzten Request angefordert</li>
</ul>
<h3>Version 1.2.5</h3>
<h4>Releasedatum: 21.08.2012</h4>
<h4>Geänderte Pakete</h4>
<ul>
    <li>
        Dragon
        <ul>
            <li>
                Application
                <ul>
                    <li>Bei Eigenschaftsklassen wird nun ein 'unset()' auf ein Attribut richtig unterstützt indem es das Attribut auf NULL setzt</li>
                </ul>
            </li>
        </ul>
    </li>
    <li>
        DragonX
        <ul>
            <li>
                Storage
                <ul>
                    <li>Fehler behoben beim Laden von einzelnen Records oder RecordLists aus dem ZendDbAdapter Storage wodurch die ID der Records nicht korrekt auf NULL gesetzt wurde und es zu Fehlermeldungen kam</li>
                </ul>
            </li>
        </ul>
    </li>
</ul>
<h4>Homepage</h4>
<ul>
    <li>Der RSS Feed mit allen Neuigkeiten hatte einen Fehler bei der Generierung und ist nun korrigiert</li>
</ul>
<h3>Version 1.2.4</h3>
<h4>Releasedatum: 20.08.2012</h4>
<h4>Geänderte Pakete</h4>
<ul>
    <li>
        DragonX
        <ul>
            <li>
                Account
                <ul>
                    <li>Fehler behoben bei der Ermittlung ob ein Service einen eingeloggten Account benötigt wenn der Service keine API Dokumentation besitzt zur Ermittlung der Annotation</li>
                    <li>Fehlende API Dokumentation für die Passwort vergessen Services nachgetragen</li>
                </ul>
            </li>
        </ul>
    </li>
</ul>
<h4>Homepage</h4>
<ul>
    <li>Das JavaScript für Bootstrap wird nun nur noch einmal am Ende des Layouts geladen und nicht mehr doppelt</li>
</ul>
<h3>Version 1.2.3</h3>
<h4>Releasedatum: 20.08.2012</h4>
<h4>Geänderte Pakete</h4>
<ul>
    <li>
        DragonX
        <ul>
            <li>
                Cronjob
                <ul>
                    <li>Fehler bei der Definierung des Installationsplugins wodurch es zu SQL Fehler kam bei einer Neuinstallation</li>
                </ul>
            </li>
            <li>
                Log
                <ul>
                    <li>Fehler bei der Definierung des Installationsplugins wodurch es zu SQL Fehler kam bei einer Neuinstallation</li>
                </ul>
            </li>
        </ul>
    </li>
</ul>
<h3>Version 1.2.2</h3>
<h4>Releasedatum: 20.08.2012</h4>
<h4>Dokumentation</h4>
<ul>
    <li>Diagramm zur Serverarchitektur auf den aktuellen Stand gebracht mit den Paketen Storage und Clientmessage</li>
</ul>
<h3>Version 1.2.1</h3>
<h4>Releasedatum: 19.08.2012</h4>
<h4>Geänderte Pakete</h4>
<ul>
    <li>
        DragonX
        <ul>
            <li>
                Clientmessage
                <ul>
                    <li>Die abstrakte Klasse zur Definition von Keys ist nun auch als 'abstract' definiert</li>
                </ul>
            </li>
            <li>
                Log
                <ul>
                    <li>Fehler bei der Installation des Paketes behoben durch die falsche Angabe an Spalten beim Übertragen der Logdaten in die neue Tabellenstruktur</li>
                </ul>
            </li>
        </ul>
    </li>
</ul>
<h3>Version 1.2.0</h3>
<h4>Releasedatum: 19.08.2012</h4>
<h4>Neue Pakete</h4>
<ul>
    <li>
        DragonX
        <ul>
            <li>Storage, siehe: <a href="<?php echo $this->url(array('controller' => 'documentation', 'action' => 'dragonx_storage'), null, true); ?>">Dokumentation/Paket Storage</a></li>
            <li>Clientmessage, siehe: <a href="<?php echo $this->url(array('controller' => 'documentation', 'action' => 'dragonx_clientmessage'), null, true); ?>">Dokumentation/Paket Clientmessage</a></li>
        </ul>
    </li>
</ul>
<h4>Geänderte Pakete</h4>
<ul>
    <li>
        Dragon
        <ul>
            <li>
                Application
                <ul>
                    <li>Konfigurationsdateien werden nun nicht mehr als statisches Attribut gecacht da sie nur selten mehrfach geladen wurden</li>
                </ul>
            </li>
            <li>
                Json
                <ul>
                    <li>Wenn man eigene Instanzen von 'Dragon_Json_Server_Request' erstellt ist die JsonRPC Version nun standardmäßig 2.0</li>
                    <li>Bei der automatischen Ausgabe von Responses eines Multirequests wird nun standardmäßig der HTTP Header des letzten Responses gesendet</li>
                </ul>
            </li>
            <li>
                Homepage
                <ul>
                    <li>Die beiden abstrakten Methoden vom Subnavigation Controller sind nun als protected mit vorangestellten "_" deklariert und die Klasse besitzt nun ein vorangestelltes 'A' um sie als Abstrakt zu kennzeichnen</li>
                    <li>Es wurden Funktionalitäten hinzugefügt für Passwort vergessen und den Login auf einer Homepage mit Sessionverwaltung</li>
                    <li>Der abstrakte Controller hat nun Methoden um auf die Parameter des Requests zuzugreifen genau wie das Requestobjekt der Services</li>
                </ul>
            </li>
        </ul>
        DragonX
        <ul>
            <li>
                Account
                <ul>
                    <li>Die Information welche Servicemethoden einen Account benötigen ist nun als Annotation direkt an der Servicemethode hinterlegt, nicht mehr als zentrale Whitelist Konfigurationsdatei</li>
                    <li>Bei der Identität (E-Mail Adresse) ist die Groß-/Kleinschreibung bei Registrierung, Login und Passwort vergessen nicht mehr relevant</li>
                </ul>
            </li>
        </ul>
    </li>
</ul>
<h4>Allgemein</h4>
<ul>
    <li>In der 'bootstrap.php' ist nun die Konstante 'BASEURL' definiert die die URL zur Homepage beinhaltet</li>
    <li>Es ist nun eine 'feed.php' vorhanden, die alle Neuigkeiten als RSS oder ATOM Feed ausgibt</li>
</ul>
<h4>Homepage</h4>
<ul>
    <li>Der Footer hat nun keinen Freiraum mehr nach unten wenn die Fensterbreite kleiner als 980px ist</li>
    <li>Der RSS Feed mit allen Neuigkeiten ist auf der Homepage eingebunden für die Browser</li>
    <li>Die Zeitpunkte in den News sind nun als Unix Timestamps definiert und werden als Datum formatiert ausgegeben</li>
    <li>Anpassung der Menüstruktur sodass das Changelog nun in der Headernavigation zu finden ist</li>
    <li>Die Accountverwaltung wird nun für die Homepage genutzt. In der Headernavigation gibt es nun daher ein Menü für Registrierung und Anmeldung eines Profils bzw. weitere Funktionalitäten für Passwort vergessen und Abmelden eines Profils</li>
    <li>Dokumentation über die Einstellung und Erstellung von Changelogseiten</li>
</ul>
<h4>JsonClient</h4>
<ul>
    <li>Unterstützung von Clientnachrichten sodass der Client bei Requests Clientnachrichten empfangen und per Callfunktionen darauf reagieren kann, siehe: <a href="<?php echo $this->url(array('controller' => 'documentation', 'action' => 'dragonx_ownclient'), null, true); ?>">Dokumentation/Eigener Client</a></li>
</ul>
<h2>Migration vom Branch 1.1</h2>
<h3>Benötigt</h3>
<ul>
    <li>Die beiden implementierten abstrakten Methoden vom Subnavigation Controller müssen bei allen davon abgeleiteten Controller als protected und im Namen mit vorangestellten "_" deklariert werden</li>
    <li>Die Konfigurationsdatei '/config/dragonx/account/whitelist.php' kann entfernt werden. Alle Servicemethoden die nicht darin definiert waren müssen die Annotation '@dragonx_account_authenticate' bekommen</li>
    <li>Bei eigenen News in der Konfigurationsdatei '/config/dragonx/homepage/news.php' muss der Zeitpunkt nun als Unix Timestamp definiert werden</li>
    <li>
        Das Paket DragonX Database wurde entfernt und durch Storage ersetzt:
        <ul>
            <li>Die Konfigurationsdatei '/config/dragonx/database/database.php' und das Template müssen nach '/config/dragonx/storage/' verschoben werden</li>
            <li>Das Plugin 'DragonX_Storage_Plugin_Database' ersetzt das Plugin 'DragonX_Database_Plugin_Database' zur Initialisierung des Datenbankadapters</li>
            <li>Die abstrakte Logikklasse entfällt. Bei Logikklassen muss daher die Ableitung davon entfernt werden</li>
            <li>Die abstrakte Modelklasse entfällt. Die Persistierung von Daten erfolgt nun in den Logikklassen mit den Records über die Storage Engine, siehe: <a href="<?php echo $this->url(array('controller' => 'documentation', 'action' => 'dragonx_storage'), null, true); ?>">Dokumentation/Paket Storage</a></li>
        </ul>
    </li>
    <li>Alle Controller mit einer Subnavigation müssen nun von 'DragonX_Homepage_Controller_ASubnavigation' erben</li>
</ul>
<h3>Optional</h3>
<ul>
    <li>Eigene Instanzen von 'Dragon_Json_Server_Request' müssen nicht mehr die JsonRPC Version übergeben wenn 2.0 verwendet wird</li>
    <li>Eigene Controller die auf Request Parameter zugreifen können nun die Methoden des abstrakten Controllers verwenden</li>
    <li>Alle Pfadangaben die den absoluten Browserpfad zur Anwendung benötigen können nun die Konstante 'BASEURL' nutzen</li>
</ul>
